// import axios from "axios";

const API_ROOT = "http://localhost:8081/api";
export default API_ROOT;

// export namespace Network {
//   const serverErrorPattern = new RegExp("^5..$");

//   const clientErrorPattern = new RegExp("^4..$");

//   const redirectPattern = new RegExp("^3..$");

//   const okPattern = new RegExp("^2..$");

//   export function buildRequest(isAuth: boolean, host: string = API!!): Request {
//     return new Request(host, isAuth);
//   }

//   export class Request {
//     host: string;
//     isAuth: boolean = false;
//     headers: Map<string, any> = new Map();

//     constructor(host: string, isAuth: boolean) {
//       this.isAuth = isAuth;
//       this.host = host;
//     }

//     get(
//       url: string,
//       params?: Map<string, any>,
//       headers?: Map<string, any>
//     ): Promise<WechatMiniprogram.RequestSuccessCallbackResult> {
//       return this.send(url, HttpMethod.GET, params, headers);
//     }

//     post(
//       url: string,
//       data: any,
//       params?: Map<string, any>,
//       headers?: Map<string, any>
//     ): Promise<WechatMiniprogram.RequestSuccessCallbackResult> {
//       return this.send(url, HttpMethod.POST, data, params, headers);
//     }

//     delete(
//       url: string,
//       headers?: Map<string, any>
//     ): Promise<WechatMiniprogram.RequestSuccessCallbackResult> {
//       return this.send(url, HttpMethod.DELETE, headers);
//     }

//     put(
//       url: string,
//       data: any,
//       params?: Map<string, any>,
//       headers?: Map<string, any>
//     ): Promise<WechatMiniprogram.RequestSuccessCallbackResult> {
//       return this.send(url, data, params, headers);
//     }

//     send(
//       url: string,
//       method: HttpMethod,
//       data?: any,
//       params?: Map<string, any>,
//       headers?: Map<string, any>
//     ): Promise<WechatMiniprogram.RequestSuccessCallbackResult> {
//       return new Promise<WechatMiniprogram.RequestSuccessCallbackResult>(
//         (resolve, reject) => {
//           axios.request({
//             url: url,
//             method: method,
//             params: params,
//             headers: headers
//           }).then(res => {

//           }).then(err => {

//           });
//           // using wx api build request
//           wx.request({
//             url: this.generateUrl(url),
//             data: data,
//             method: method,
//             header: this.generateHeaders(this.isAuth, headers),
//             dataType: "json",
//             responseType: "text",
//             success: (res: WechatMiniprogram.RequestSuccessCallbackResult) => {
//               if (this.isSuccess(res)) {
//                 resolve(res);
//               } else {
//                 console.error(
//                   `url: ${url}, method: ${method}, headers: ${headers} encounter some errors, details: ${res.errMsg}`
//                 );
//                 reject(res);
//               }
//             },

//             fail: (err: WechatMiniprogram.AccessFailCallbackResult) => {
//               console.error(`Requset failed! ${url}`);
//             },

//             complete: (res: WechatMiniprogram.GeneralCallbackResult) => {
//               console.log(`Request complete! ${url}`);
//             },
//           });
//         }
//       );
//     }

//     isSuccess(res: WechatMiniprogram.RequestSuccessCallbackResult): boolean {
//       let statusCode = String(res.statusCode);
//       return (
//         !serverErrorPattern.test(statusCode) &&
//         !clientErrorPattern.test(statusCode)
//       );
//     }

//     /**
//      * Request params append.
//      */
//     resolveParams(params?: Map<string, string>): string {
//       if (params != null) {
//         let paramsStr = "?";
//         params.forEach((value, key) => {
//           paramsStr += `${key}=${value}&`;
//         });
//         return paramsStr.substring(0, paramsStr.length - 1);
//       }
//       return "";
//     }

//     generateUrl(url: string, params?: Map<string, any>): string {
//       return `${this.host}/api${url}${this.resolveParams(params)}`;
//     }

//     generateHeaders(isAuth: boolean, headers?: Map<string, any>): any {
//       if (headers) {
//         // add all
//         this.headers = new Map([...this.headers, ...headers]);
//       }
//       let token = wx.getStorageSync("Authorization");
//       if (token != "") {
//         this.headers.set("Authorization", token);
//       }
//       return Object.fromEntries(this.headers);
//     }
//   }

//   export enum HttpMethod {
//     GET = "GET",
//     POST = "POST",
//     PUT = "PUT",
//     DELETE = "DELETE",
//   }
// }
